<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>関数名色分け | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀一般トップへ</a>
        <li><div class="list-title">
    <span class="no">5029</span>
    <a class="thread-title" href="5029.html#5029">関数名色分け</a></div>
    <ul><li><div class="list-title">
    <span class="no">5034</span>
    <a class="thread-title" href="5029.html#5034">Re:関数名色分け</a></div>
    </li><li><div class="list-title">
    <span class="no">5035</span>
    <a class="thread-title" href="5029.html#5035">Re:関数名色分け</a></div>
    <ul><li><div class="list-title">
    <span class="no">5038</span>
    <a class="thread-title" href="5029.html#5038">Re2:関数名色分け</a></div>
    </li><li><div class="list-title">
    <span class="no">5047</span>
    <a class="thread-title" href="5029.html#5047">Re2:関数名色分け</a></div>
    <ul><li><div class="list-title">
    <span class="no">5051</span>
    <a class="thread-title" href="5029.html#5051">Re3:関数名色分け</a></div>
    <ul><li><div class="list-title">
    <span class="no">5052</span>
    <a class="thread-title" href="5029.html#5052">Re4:関数名色分け</a></div>
    </li><li><div class="list-title">
    <span class="no">5054</span>
    <a class="thread-title" href="5029.html#5054">Re4:関数名色分け</a></div>
    <ul><li><div class="list-title">
    <span class="no">5059</span>
    <a class="thread-title" href="5029.html#5059">Re5:関数名色分け</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li>
    </ul><ul class="main"><li><section><h1 id=5029>
    <span class="no">[5029]</span>
    <a class="thread-title" href="#5029">関数名色分け</a>
    <span class="author">なかはた</span>
    <time datetime="2006-02-11T15:14:57">2006年02月11日 15:14</time></h1>
    <div class="body">void printhand(int hand)<br>{<br>}<br>などの関数があったときに上記関数"printhand"の部分<br>を色分けするにはどのように設定すればよいのでしょうか？<br><br>つまり、関数名を色分けしたいんです。<br><br>誰かお分かりの方返信お願いします。</div></section>
    <ul><li><section><h1 id=5034>
    <span class="no">[5034]</span>
    <a class="thread-title" href="#5034">Re:関数名色分け</a>
    <span class="author">マサ</span>
    <time datetime="2006-02-15T14:36:35">2006年02月15日 14:36</time></h1>
    <div class="body">私の場合、強調キーワードに登録しました。<br>関数名が多い場合は面倒です。</div></section>
    </li><li><section><h1 id=5035>
    <span class="no">[5035]</span>
    <a class="thread-title" href="#5035">Re:関数名色分け</a>
    <span class="author">ryoji</span>
    <time datetime="2006-02-15T17:47:22">2006年02月15日 17:47</time></h1>
    <div class="body">お望みのこととはちょっと違うと思いますが、<br>K2Editorなど他エディタの正規表現色分けを真似すれば<br>関数定義行を色分けすることはできそうです。<br><br>K2Editor風正規表現<br>/^[a-zA-Z_][^\(=;:]*\s+\*?[a-zA-Z_]\w*\([^;]*$/k<br>/^[a-zA-Z_][^\(=;:]*\s+operator[^\(;]+\([^;]*$/k<br>/^[a-zA-Z_][^\(=;:]*::[^\(;]+\([^;]*$/k<br>/^[a-zA-Z_]\w*[a-z]+\w*\s*\([^;]*$/k<br><br>秀丸も似たような感じで色分けしてますね。<br>（違いはよくわかりませんが）</div></section>
    <ul><li><section><h1 id=5038>
    <span class="no">[5038]</span>
    <a class="thread-title" href="#5038">Re2:関数名色分け</a>
    <span class="author">みち</span>
    <time datetime="2006-02-16T13:04:40">2006年02月16日 13:04</time></h1>
    <div class="body">ryojiさんの設定を真似しました。希望通りの動作です。<br>ありがとうございます<br></div></section>
    </li><li><section><h1 id=5047>
    <span class="no">[5047]</span>
    <a class="thread-title" href="#5047">Re2:関数名色分け</a>
    <span class="author">fon</span>
    <time datetime="2006-02-21T23:05:09">2006年02月21日 23:05</time></h1>
    <div class="body">横合いから済みません。<br>関数定義を１つの正規表現で出来ないかと↑の例を元に<br>挑戦してみました！<br>完全ではないですが登録が１個で済みます。<br>（正規表現は取っ付き難かったのですが、具体例がある<br>　と違いますね、感謝。）<br><br>/^(((::)\s*)?[a-zA-Z_~\*]+[\w\s]*)+\([^;]*$/k<br><br>対応していないもの：<br>　(type) func( ...<br>誤認するもの：<br>　value*(10), ...<br>代わりに **func( みたいのはいけます。<br><br>関連して、type func(type value)にマッチしたら、<br>typeには重複でヒットしないものなんですよね？<br>優先順位をいじってもダメでした。</div></section>
    <ul><li><section><h1 id=5051>
    <span class="no">[5051]</span>
    <a class="thread-title" href="#5051">Re3:関数名色分け</a>
    <span class="author">fon</span>
    <time datetime="2006-02-22T13:13:44">2006年02月22日 13:13</time></h1>
    <div class="body">自分で載せて置いてなんですが、致命的な問題がありましたので、取り下げます。<br>下記の正規表現で変換自体はうまくいきますが、処理がものすごく重くなります。<br>具体的にはスクロールがもっさりしたり、ファイルを開くのに時間がかかります。<br>繰り返し処理を何度も使ったのがいけなかったのでしょうか。<br>やはり先人の知恵、シンプル・イズ・ベストということで。<br>&gt; /^(((::)\s*)?[a-zA-Z_~\*]+[\w\s]*)+\([^;]*$/k<br>教訓：サクラの動作が不安定なときは、正規表現キーワードも疑ってみる。<br></div></section>
    <ul><li><section><h1 id=5052>
    <span class="no">[5052]</span>
    <a class="thread-title" href="#5052">Re4:関数名色分け</a>
    <span class="author">げんた</span>
    <time datetime="2006-02-23T00:19:50">2006年02月23日 00:19</time></h1>
    <div class="body">&gt;処理がものすごく重くなります。<br>&gt;繰り返し処理を何度も使ったのがいけなかったのでしょうか。<br>繰り返しが入れ子になっていると長さに応じて処理が指数的に増加します．<br>私のＰＣではスクロールした瞬間に固まりました．<br>試しに(全略)さんのJRegex版でも同じパターンを試してみましたが固まりました．<br><br>ところで，これを::があって 英数字の列やスペースがあってというのが交互に来てその後括弧が始まると考えて，::と英数字部分を展開して以下のようにしたら固まらなくなりましたが，これだとどうでしょうか．<br><br>/^(::\s*)?[a-zA-Z_~\*]+[\w\s]*(::\s*[a-z<br>A-Z_~\*]+[\w\s]*)*\([^;]*$/k<br></div></section>
    </li><li><section><h1 id=5054>
    <span class="no">[5054]</span>
    <a class="thread-title" href="#5054">Re4:関数名色分け</a>
    <span class="author">すい</span>
    <time datetime="2006-02-23T00:36:43">2006年02月23日 00:36</time></h1>
    <div class="body">&gt;具体的にはスクロールがもっさりしたり、ファイルを開くのに時間がかかります。<br>&gt;繰り返し処理を何度も使ったのがいけなかったのでしょうか。<br>&gt;やはり先人の知恵、シンプル・イズ・ベストということで。<br>&gt;&gt; /^(((::)\s*)?[a-zA-Z_~\*]+[\w\s]*)+\([^;<br>]*$/k<br><br>当たり前です。(^^;) ↑これ、正規表現の禁じ手(?)ほぼその物ですからね。<br>いくらなんでも無茶でしょう。<br><br>(　) の中に + (1つ以上) があるので、(　) が空文字列とはマッチしない<br>という辺りに助けられて、かろうじて無限ループにはおちいらないで<br>済んでいますが。<br><br>それでも「マッチしそうでマッチしない」ような文字列があると、<br>「本当にマッチしない」という事が分かるまでに確認しなくては<br>ならないパターンが多量にあるので、確認作業が終了するまでに<br>多大なマシンパワーを要します。<br><br>この正規表現の場合だと、具体例を挙げると<br>↓こんな文字列ですね。<br><br>int&#9;abcdefghijklmn;<br><br>これの変数名が長いと「この正規表現にはマッチしない」と<br>いう結論に至るまでに必要な処理量が膨大になります。<br><br>しかも文字が１文字増える毎に必要な処理量は指数関数的に<br>激増していきます。<br># さあ、実際に変数名を１文字ずつ増やしていってみませぅ。<br><br>この辺の事は Google で「正規表現  無限ループ」とでも検索すれば<br>すぐわかるのではないかと。<br></div></section>
    <ul><li><section><h1 id=5059>
    <span class="no">[5059]</span>
    <a class="thread-title" href="#5059">Re5:関数名色分け</a>
    <span class="author">fon</span>
    <time datetime="2006-02-26T22:05:35">2006年02月26日 22:05</time></h1>
    <div class="body">&gt;int        abcdefghijklmn;<br>確かに激重い、たったこれだけの文なのに。。<br>調べてみると、(.+)+[a] のような簡単な式でも、例文によって<br>　１．「type            func(」だとヒットせず、処理が重い。<br>　２．「type                a」だと、ヒットし、軽い。<br>のように違いがありました。<br>こうしてはダメ、という法則を見つけるには至りませんでしたが<br>ご指摘頂いたように、繰り返しの入れ子や、マッチしそうでマッ<br>チしないパターンなどに注意して設計しなくては、ですね。<br>この件の調査中、先読み(?=pattern)というのも憶えましたので、<br>入れ子を外し、再度見直しをかけたものを作ってみました。<br>関数定義(括弧の前までにマッチ)：<br>　/^[a-zA-Z_~:\*]+[\s\w~:\*]*(?=\([^;]*$)<br>/k<br><br>げんたさん、すいさん、コメントありがとうございます！<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></body></html>